""""
一.编写启动代码(fff)-->配置信息集成(将所有的配置信息封装成类)
1.数据库配置
2.redis配置
3.session配置--->先创建Session对象,初始化session
4.csrf配置-->除了Get以外的其他所有请求方式都需要进行csrf配置
5.抽取初始化信息到配置文件config.py(在config.py文件中,创建多种模式下的配置文件,继承基础配置类,并且提供外界统一的访问方式)
6.创建info模块,初始化app
7.日志
1)在info(应用)的初始化init里面创建函数,配置日志信息
2)根据开发模式不同,设置日志级别
8.将视图函数,抽取到蓝图板块
1)在info下新建modules包,管理所有的蓝图
2)在modules下创建首页蓝图(index)
2)在init文件创建蓝图对象,并且导入view的包
3)创建view.py文件,添加视图函数
4)在info(应用)初始化(init)里注册蓝图对象
9.数据库迁移
1)创建Manager对象管理app
2)使用Migrate,管理app和db(db在info的初始化文件里,由于需要导入,故需将其设置为全局变量),并设置db命令
3)注意:model.py文件位于info下,故需先在manager.py文件里导入model包,才能在生成迁移脚本
"""""
import datetime
import random

from flask import current_app
from flask.ext.migrate import Migrate, MigrateCommand
from flask.ext.script import Manager

from info import create_app, db, models
from info.models import User

app = create_app('develop')
# 14)创建Manager对象管理app
manager = Manager(app)
# 15)使用Migrate,管理app和db
Migrate(app, db)
# 16)设置db命令
manager.add_command('db', MigrateCommand)


# 添加测试用户
@manager.option('-n', '--name', dest='name')
def add_test_users(name):
    # 用户列表容器
    user_list = []

    for num in range(0, 1000):
        # 创建用户对象
        user = User()

        # 设置属性
        user.mobile = "138%08d" % num
        user.nick_name = "138%08d" % num
        user.password_hash = "pbkdf2:sha256:50000$YYAGSAZY$2d2a6bdf9b3a142c14c5c15b62c93603caff7542afa5c80ec9f7e2a880efcf4b"
        # 近一个月用户登陆时间
        user.last_login = datetime.datetime.now() - datetime.timedelta(seconds=random.randint(0, 3600 * 24 * 31))
        # 添加到用户列表
        user_list.append(user)

    # 添加到数据库中
    try:
        db.session.add_all(user_list)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return "添加失败"

    return "添加成功"


if __name__ == '__main__':
    manager.run()
